| SEGMENT START (RAM) | SEGMENT END (RAM) | SLOT SIZE | |
| Main ship fires | 0xAA00 | 0xADFF | 0x40 |
| Energy ball | 0xAE00 | 0xB0FF | 0x30 |
| Standard objects | 0xB100 | 0xBFFF | 0x60 |
| ROUTINE BRANCHEMENT EXAMPLE ON THE OBJ 0F |
| ROM:00008A1C
Obj0F:
; DATA XREF: ROM:00008210t ROM:00008A1C move.w #$4270,d0 ROM:00008A20 btst #1,$11(a6) ROM:00008A26 beq.s Obj0F_8A2C ROM:00008A28 move.w #$4288,d0 ROM:00008A2C ROM:00008A2C Obj0F_8A2C: ; CODE XREF: ROM:00008A26j ROM:00008A2C move.w d0,$24(a6) ROM:00008A30 movea.l #Obj0F_Routines,a0 ROM:00008A36 bra.w ObjBranchToRoutine ROM:00008A36 ; --------------------------------------------------------------------------- ROM:00008A3A Obj0F_Routines: dc.w Obj0F_r00-jObj ; DATA XREF: ROM:00008A30t ROM:00008A3A ; ROM:Obj0F_Routinest ... ROM:00008A3C dc.w Obj0F_r01-jObj ROM:00008A3E dc.w Obj0F_r02-jObj |
|
byte 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
Bitfield |
Health Points |
Score earned |
UNK : specific to object ? Parameters for object subroutine ? |
||||||||||||
|
bit 15 |
14 |
13 |
12 |
|
UNK : Always 0 ?? |
|||
|
bit 11 |
10 |
9 |
8 |
|
UNK |
UNK |
Invincible if set |
Reaction with Styx's fire if set |
|
bit 7 |
6 |
5 |
4 |
|
UNK |
THEORY : object
pasted to the screen ? |
Specific subroutine executed for the object if set. The beginning of the subroutine is in ROM at ADDRESS :(0x81F2+(OBJECT_IDx2)) |
Multiple explosion ? |
|
bit 3 |
2 |
1 |
0 |
|
Targeted by the Styx's 5th weapon if clear |
Explosion style ? |
UNK |
UNK |
| Voices related locations |
| 0000:0000411A Abs PlayClawVoice (subroutine to request the specific 'CLAW' voice) 0000:000054DC Abs PlayVoice (subroutine to request a voice) 0000:000054E2 Abs ExecuteVoiceRequest (subroutine which executes the voice requested) 0000:00073478 Abs VoicesPtrTable (table of offsets which described voices bank organisation) 0000:000734C8 Abs Voice0 (raw data) 0000:00073D60 Abs Voice1 0000:00074798 Abs Voice2 0000:00075118 Abs Voice3 0000:00075AF0 Abs Voice4 0000:00076350 Abs Voice5 0000:00076A00 Abs Voice6 0000:00077150 Abs Voice7_Bad (raw data unused ?) |
| MUSIC RELATED LOCATIONS | ||
| // SUBROUTINES 0000:0000107A Abs PlayBossMusic 0000:00005216 Abs PrepareMusic1 0000:00005240 Abs PrepareMusic2 0000:00005284 Abs PlayMusicExec 0000:000052A0 Abs PlayMusic // DATA ???? 0000:00006B18 Abs MusicTestData1 0000:00006B32 Abs MusicTestData2 | // BANK 1 0000:00070000 Abs MusicPtrTable1 0000:00070020 Abs Music12 (ellis boss) 0000:0007047F Abs Music13 (orn base boss) 0000:00070795 Abs Music14 (final boss) 0000:00070EA8 Abs Music15 (main theme) 0000:000714B2 Abs Music16 (stage select) 0000:00071A1A Abs Music17 (level end) 0000:00071BB3 Abs Music18 (continue) 0000:00072036 Abs Music19 (game over) 0000:000722F3 Abs Music20 (end story) 0000:000726EB Abs Music21 (staff) | // BANK 2 0000:00078000 Abs MusicPtrTable2 0000:00078020 Abs Music0 (hydra) 0000:00078D6F Abs Music1 (gorgon) 0000:00079953 Abs Music2 (seiren) 0000:0007A6B5 Abs Music3 (haides) 0000:0007B088 Abs Music4 (ellis) 0000:0007B981 Abs Music5 (cerberus) 0000:0007C7DE Abs Music6 (orn base) 0000:0007D462 Abs Music7 (orn core) 0000:0007DA3E Abs Music8 (hydra boss) 0000:0007E144 Abs Music9 (gorgon boss) 0000:0007E53B Abs Music10 (seiren boss) 0000:0007E9E4 Abs Music11 (haides boss) |
| SOUND RELATED LOCATIONS |
| // SOUND RELATED SUBROUTINES 0000:0000532C Abs PlaySound1 (with priority management) 0000:0000534E Abs PlaySound2 (without priority management) 0000:00005368 Abs ExecuteSoundRequest 0000:0000FCAE Abs ObjPlaySound (similar to PlaySound1 but always called by objects programs) // SOUND DATA 0000:00077300 Abs SoundBank_Header 0000:00077308 Abs SoundBank_PtrTable 0000:0007738A Abs SoundBank_Data 0000:0007F300 Abs Sound_Unk |
| GENERAL ART RELATED LOCATIONS |
| 0000:0005A080 Abs GeneralArtPtrTable 0000:0005A0A0 Abs GeneralArt0 (styx, fires and hits) 0000:0005BB80 Abs GeneralArt1 (letters, icons, black BGs, energy ball & missiles) 0000:0005C74E Abs GeneralArt2 (bonus ship) 0000:0005CBD4 Abs GeneralArt3 (planets, lvl loading screen borders) 0000:0005DF7A Abs GeneralArt4 0000:0005E056 Abs GeneralArt5 |
| LEVEL ART LOCATIONS | |
|
[OBJECTS ART
BANK] [PLANE A/B TILES
BANK] [PLANE A/B MAPPINGS BANK] HYDRA 00020122 0002E9C2 000395CF GORGON 00021CDF 0002FE5E 0003AEC4 SEIREN 00023BB1 00030F73 0003BEAC HAIDES 00025C54 00031D78 0003D22A ELLIS 00027E76 00032E38 0003E6B5 CERBERUS 00029DB3 00033DFE 0004028C ORN_BASE 0002BBEB 00035B21 00041EF6 ORN_CORE 0002D801 000386E3 00043B34 | 0000:00020000 Abs LevelCprData 0000:00020122 Abs CprSprites_Hydra 0000:00021CDF Abs CprSprites_Gorgon 0000:00023BB1 Abs CprSprites_Seiren 0000:00025C54 Abs CprSprites_Haides 0000:00027E76 Abs CprSprites_Ellis 0000:00029DB3 Abs CprSprites_Cerberus 0000:0002BBEB Abs CprSprites_OrnBase 0000:0002D801 Abs CprSprites_OrnCore 0000:0002E9C2 Abs CprTiles_Hydra 0000:0002FE5E Abs CprTiles_Gorgon 0000:00030F73 Abs CprTiles_Seiren 0000:00031D78 Abs CprTiles_Haides 0000:00032E38 Abs CprTiles_Ellis 0000:00033DFE Abs CprTiles_Cerberus 0000:00035B21 Abs CprTiles_OrnBase 0000:000386E3 Abs CprTiles_OrnCore 0000:000395CF Abs CprMaps_Hydra 0000:0003AEC4 Abs CprMaps_Gorgon 0000:0003BEAC Abs CprMaps_Seiren 0000:0003D22A Abs CprMaps_Haides 0000:0003E6B5 Abs CprMaps_Ellis 0000:0004028C Abs CprMaps_Cerberus 0000:00041EF6 Abs CprMaps_OrnBase 0000:00043B34 Abs CprMaps_OrnCore |
| BOSS ART RELATED LOCATIONS |
| 0000:00048100 Abs BossArtPtrTable 0000:00048120 Abs BossArt_Hydra 0000:0004B3B2 Abs BossArt_Gorgon 0000:0004D1D4 Abs BossArt_Seiren 0000:0004EC16 Abs BossArt_Haides 0000:00050E36 Abs BossArt_Ellis 0000:0005362A Abs BossArt_OrnBase 0000:00055374 Abs BossArt_OrnCore |
| Target Shadows LOCATIONS |
| 0000:0001F400 Abs TargetShadowPtrTable 0000:0001F420 Abs TargetShadow_Hydra 0000:0001F578 Abs TargetShadow_Gorgon 0000:0001F814 Abs TargetShadow_Seiren 0000:0001F91C Abs TargetShadow_Haides 0000:0001FA2E Abs TargetShadow_Ellis 0000:0001FB96 Abs TargetShadow_Cerberus 0000:0001FC5A Abs TargetShadow_OrnBase 0000:0001FD56 Abs TargetShadow_OrnCore |
| End art related locations |
| 0000:0006561A Abs CprEndPtrTable 0000:00065688 Abs CprEndStars 0000:000657CF Abs CprEndOrnExplosion 0000:00065A68 Abs CprEndStoryChars 0000:00065D3F Abs CprEndOrn 0000:00066D97 Abs CprEndBaseTiles 0000:0006813C Abs CprEndPicture1 0000:00069875 Abs CprEndPicture2 0000:0006BFB4 Abs CprEndBaseMaps 0000:0006C463 Abs CprEndStyxAndLetters |
Level |
Objects list rom address (hex) |
Objects list size (hex) |
Number of entries (hex (dec)) |
Number of empty slots (dec) |
|
HYDRA |
18000 |
3D0 |
7A (122) |
262 |
|
GORGON |
18C00 |
588 |
B1 (177) |
207 |
|
SEIREN |
19800 |
3F8 |
7F (127) |
257 |
|
HAIDES |
1A400 |
5F0 |
BE (190) |
194 |
|
ELLIS |
1B000 |
3F8 |
7F (127) |
257 |
|
CERBERUS |
1BC00 |
428 |
85 (133) |
251 |
|
ORN BASE |
1C800 |
5A0 |
B4 (180) |
204 |
|
ORN CORE |
1D400 |
020 |
4 (4) |
380 |
|
byte 0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
Counter value |
X |
Y |
Bitfield |
ID |
Parameters |
||
|
0x00 |
0x18 |
0x38 |
0x18 |
0xFF |
0x07 |
0x00 |
0x07 |
|
Object loaded when counter value = 0x18 |
X position : 0x38 (right) |
Y position : 0x18 (top) |
Loaded on all difficulty level |
ID = 0x07 |
7 = bonus ship contains the CLAW weapon |
||
| Lvl Param | |
| 00 |
The 00 parameter is the most powerful lvl param used in that game, and it is the ultimate element which make this game greatly editable : the 00 Call is used to change X & Y Velocities of the scroll. In only one line of 8 byte, in the Object list, you can modify velocities of plane A and plane B. These calls were used in the object list to make the main level scrolling program global and editable for every level. Now you know this game has not his scroll hard coded, you can modify it as a string ! The param 00 object list's entry is not like objects entries, because it's really not the same data... All objects have the same entry format but this element is a configuration command for a program, so it has its own syntax. (x & y velocities for plane A & B). |
| 01 |
The 01 param is used to display a special background pattern, especially for Haides or Gorgon levels. |
| 02 |
The 02 param is used as a display configuration. It's used to set priorities between planes. It uses bits, and I do not finish to discover parameters of this entry. In the game, it is used to display plane A in front of the sprite layer, in the HYDRA level for example. |
| 03 |
Today, I don't find the goal of this param. It seems to be used at level beginnings, but by corruption, I have no results. Theory : used by the level to define parts of the plane (top and bottom parts)... |
| 04 |
The 04 call is used by the HAIDES specific level, to move bottom part of the plane A. |
| 05 | Not used, don't try to use it, no asm code is dedicated to recognize this param. |
| 06 |
The param 06 is used to load the boss (to display the emergency message)
and to execute the boss program. |
| Text used as level information |
| 0000:000065C4 Abs HydraTxt 0000:00006600 Abs GorgonTxt 0000:00006645 Abs SeirenTxt 0000:0000667F Abs HaidesTxt 0000:000066B9 Abs EllisTxt 0000:000066FD Abs CerberusTxt 0000:0000673C Abs OrnBaseTxt 0000:0000677A Abs OrnCoreTxt |
| DEMO RELATED LOCATIONS |
| 0000:0001E000 Abs Demo_Hydra 0000:0001E400 Abs Demo_Gorgon 0000:0001E800 Abs Demo_Seiren 0000:0001EC00 Abs Demo_Haides 0000:0001F000 Abs Demo_Ellis |
| BETA STAGE SELECT HACK |
| only 6 bits modified on the all game to obtain all level playable from the beginning : 0x6E45 : O4 => 07 (0100 => 0111) 0x6E63 : 04 => 07 (0100 => 0111) 0x6E75 : 04 => 07 ;; Launch the game : all levels can be played ! |